! function() {
    var a, b = b || {},
        c = this,
        d = function() {},
        e = function(a) {
            var b = typeof a;
            if ("object" == b) {
                if (!a) return "null";
                if (a instanceof Array) return "array";
                if (a instanceof Object) return b;
                var c = Object.prototype.toString.call(a);
                if ("[object Window]" == c) return "object";
                if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice")) return "array";
                if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) return "function"
            } else if ("function" == b && "undefined" == typeof a.call) return "object";
            return b
        },
        f = function(a) {
            return "array" == e(a)
        },
        g = function(a) {
            var b = e(a);
            return "array" == b || "object" == b && "number" == typeof a.length
        },
        h = function(a) {
            return "string" == typeof a
        },
        i = function(a) {
            return "number" == typeof a
        },
        j = function(a) {
            return "function" == e(a)
        },
        k = function(a) {
            var b = typeof a;
            return "object" == b && null != a || "function" == b
        },
        l = function(a, b, c) {
            return a.call.apply(a.bind, arguments)
        },
        m = function(a, b, c) {
            if (!a) throw Error();
            if (2 < arguments.length) {
                var d = Array.prototype.slice.call(arguments, 2);
                return function() {
                    var c = Array.prototype.slice.call(arguments);
                    return Array.prototype.unshift.apply(c, d),
                        a.apply(b, c)
                }
            }
            return function() {
                return a.apply(b, arguments)
            }
        },
        n = function(a, b, c) {
            return n = Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? l : m,
                n.apply(null, arguments)
        },
        o = function(a, b) {
            var c = Array.prototype.slice.call(arguments, 1);
            return function() {
                var b = c.slice();
                return b.push.apply(b, arguments),
                    a.apply(this, b)
            }
        },
        p = Date.now ||
        function() {
            return +new Date
        },
        q = function(a, b) {
            var d = a.split("."),
                e = c;
            d[0] in e || !e.execScript || e.execScript("var " + d[0]);
            for (var f; d.length && (f = d.shift());) d.length || void 0 === b ? e = e[f] ? e[f] : e[f] = {} : e[f] = b
        },
        r = function(a, b) {
            function c() {}
            c.prototype = b.prototype,
                a.L = b.prototype,
                a.prototype = new c,
                a.Pc = function(a, c, d) {
                    return b.prototype[c].apply(a, Array.prototype.slice.call(arguments, 2))
                }
        };
    Function.prototype.bind = Function.prototype.bind ||
        function(a, b) {
            if (1 < arguments.length) {
                var c = Array.prototype.slice.call(arguments, 1);
                return c.unshift(this, a),
                    n.apply(null, c)
            }
            return n(this, a)
        };
    var s = function(a) {
        if (Error.captureStackTrace) Error.captureStackTrace(this, s);
        else {
            var b = Error().stack;
            b && (this.stack = b)
        }
        a && (this.message = String(a))
    };
    r(s, Error),
        s.prototype.name = "CustomError";
    var t = function(a, b) {
            return a < b ? -1 : a > b ? 1 : 0
        },
        u = Array.prototype,
        v = u.indexOf ?
        function(a, b, c) {
            return u.indexOf.call(a, b, c)
        } : function(a, b, c) {
            if (c = null == c ? 0 : 0 > c ? Math.max(0, a.length + c) : c, h(a)) return h(b) && 1 == b.length ? a.indexOf(b, c) : -1;
            for (; c < a.length; c++)
                if (c in a && a[c] === b) return c;
            return -1
        },
        w = u.forEach ?
        function(a, b, c) {
            u.forEach.call(a, b, c)
        } : function(a, b, c) {
            for (var d = a.length,
                    e = h(a) ? a.split("") : a, f = 0; f < d; f++) f in e && b.call(c, e[f], f, a)
        },
        x = u.some ?
        function(a, b, c) {
            return u.some.call(a, b, c)
        } : function(a, b, c) {
            for (var d = a.length,
                    e = h(a) ? a.split("") : a, f = 0; f < d; f++)
                if (f in e && b.call(c, e[f], f, a)) return !0;
            return !1
        },
        y = u.every ?
        function(a, b, c) {
            return u.every.call(a, b, c)
        } : function(a, b, c) {
            for (var d = a.length,
                    e = h(a) ? a.split("") : a, f = 0; f < d; f++)
                if (f in e && !b.call(c, e[f], f, a)) return !1;
            return !0
        },
        z = function(a) {
            var b;
            a: {
                b = ed;
                for (var c = a.length,
                        d = h(a) ? a.split("") : a, e = 0; e < c; e++)
                    if (e in d && b.call(void 0, d[e], e, a)) {
                        b = e;
                        break a
                    }
                b = -1
            }
            return 0 > b ? null : h(a) ? a.charAt(b) : a[b]
        },
        A = function(a, b) {
            var c, d = v(a, b);
            return (c = 0 <= d) && u.splice.call(a, d, 1),
                c
        },
        B = function(a) {
            return u.concat.apply(u, arguments)
        },
        C = function(a, b, c) {
            return 2 >= arguments.length ? u.slice.call(a, b) : u.slice.call(a, b, c)
        },
        D = "StopIteration" in c ? c.StopIteration : Error("StopIteration"),
        E = function() {};
    E.prototype.next = function() {
            throw D
        },
        E.prototype.vc = function() {
            return this
        };
    var F = function(a, b, c) {
            for (var d in a) b.call(c, a[d], d, a)
        },
        G = function(a) {
            var b, c = [],
                d = 0;
            for (b in a) c[d++] = a[b];
            return c
        },
        H = function(a) {
            var b, c = [],
                d = 0;
            for (b in a) c[d++] = b;
            return c
        },
        I = function(a, b) {
            var c;
            a: {
                for (c in a)
                    if (b.call(void 0, a[c], c, a)) break a;
                c = void 0
            }
            return c && a[c]
        },
        J = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),
        K = function(a, b) {
            for (var c, d, e = 1; e < arguments.length; e++) {
                d = arguments[e];
                for (c in d) a[c] = d[c];
                for (var f = 0; f < J.length; f++) c = J[f],
                    Object.prototype.hasOwnProperty.call(d, c) && (a[c] = d[c])
            }
        },
        L = function(a, b) {
            this.p = {},
                this.b = [],
                this.oa = this.h = 0;
            var c = arguments.length;
            if (1 < c) {
                if (c % 2) throw Error("Uneven number of arguments");
                for (var d = 0; d < c; d += 2) this.set(arguments[d], arguments[d + 1])
            } else a && this.ia(a)
        };
    L.prototype.t = function() {
            M(this);
            for (var a = [], b = 0; b < this.b.length; b++) a.push(this.p[this.b[b]]);
            return a
        },
        L.prototype.F = function() {
            return M(this),
                this.b.concat()
        },
        L.prototype.Q = function(a) {
            return P(this.p, a)
        },
        L.prototype.remove = function(a) {
            return !!P(this.p, a) && (delete this.p[a], this.h--, this.oa++, this.b.length > 2 * this.h && M(this), !0)
        };
    var M = function(a) {
        if (a.h != a.b.length) {
            for (var b = 0,
                    c = 0; b < a.b.length;) {
                var d = a.b[b];
                P(a.p, d) && (a.b[c++] = d),
                    b++
            }
            a.b.length = c
        }
        if (a.h != a.b.length) {
            for (var e = {},
                    c = b = 0; b < a.b.length;) d = a.b[b],
                P(e, d) || (a.b[c++] = d, e[d] = 1),
                b++;
            a.b.length = c
        }
    };
    a = L.prototype,
        a.get = function(a, b) {
            return P(this.p, a) ? this.p[a] : b
        },
        a.set = function(a, b) {
            P(this.p, a) || (this.h++, this.b.push(a), this.oa++),
                this.p[a] = b
        },
        a.ia = function(a) {
            var b;
            a instanceof L ? (b = a.F(), a = a.t()) : (b = H(a), a = G(a));
            for (var c = 0; c < b.length; c++) this.set(b[c], a[c])
        },
        a.forEach = function(a, b) {
            for (var c = this.F(), d = 0; d < c.length; d++) {
                var e = c[d],
                    f = this.get(e);
                a.call(b, f, e, this)
            }
        },
        a.clone = function() {
            return new L(this)
        },
        a.Jb = function() {
            M(this);
            for (var a = {},
                    b = 0; b < this.b.length; b++) {
                var c = this.b[b];
                a[c] = this.p[c]
            }
            return a
        },
        a.vc = function(a) {
            M(this);
            var b = 0,
                c = this.b,
                d = this.p,
                e = this.oa,
                f = this,
                g = new E;
            return g.next = function() {
                    for (;;) {
                        if (e != f.oa) throw Error("The map has changed since the iterator was created");
                        if (b >= c.length) throw D;
                        var g = c[b++];
                        return a ? g : d[g]
                    }
                },
                g
        };
    var N, O, P = function(a, b) {
            return Object.prototype.hasOwnProperty.call(a, b)
        },
        Q = {
            id: "hitType",
            name: "t",
            valueType: "text",
            maxLength: void 0,
            defaultValue: void 0
        },
        R = {
            id: "sessionControl",
            name: "sc",
            valueType: "text",
            maxLength: void 0,
            defaultValue: void 0
        },
        S = {
            id: "description",
            name: "cd",
            valueType: "text",
            maxLength: 2048,
            defaultValue: void 0
        },
        T = {
            id: "eventCategory",
            name: "ec",
            valueType: "text",
            maxLength: 150,
            defaultValue: void 0
        },
        U = {
            id: "eventAction",
            name: "ea",
            valueType: "text",
            maxLength: 500,
            defaultValue: void 0
        },
        V = {
            id: "eventLabel",
            name: "el",
            valueType: "text",
            maxLength: 500,
            defaultValue: void 0
        },
        W = {
            id: "eventValue",
            name: "ev",
            valueType: "integer",
            maxLength: void 0,
            defaultValue: void 0
        },
        X = {
            pd: Q,
            Qc: {
                id: "anonymizeIp",
                name: "aip",
                valueType: "boolean",
                maxLength: void 0,
                defaultValue: void 0
            },
            Ad: {
                id: "queueTime",
                name: "qt",
                valueType: "integer",
                maxLength: void 0,
                defaultValue: void 0
            },
            Wc: {
                id: "cacheBuster",
                name: "z",
                valueType: "text",
                maxLength: void 0,
                defaultValue: void 0
            },
            Gd: R,
            Wd: {
                id: "userId",
                name: "uid",
                valueType: "text",
                maxLength: void 0,
                defaultValue: void 0
            },
            xd: {
                id: "nonInteraction",
                name: "ni",
                valueType: "boolean",
                maxLength: void 0,
                defaultValue: void 0
            },
            fd: S,
            Pd: {
                id: "title",
                name: "dt",
                valueType: "text",
                maxLength: 1500,
                defaultValue: void 0
            },
            Sc: {
                id: "appId",
                name: "aid",
                valueType: "text",
                maxLength: 150,
                defaultValue: void 0
            },
            Tc: {
                id: "appInstallerId",
                name: "aiid",
                valueType: "text",
                maxLength: 150,
                defaultValue: void 0
            },
            jd: T,
            hd: U,
            kd: V,
            ld: W,
            Id: {
                id: "socialNetwork",
                name: "sn",
                valueType: "text",
                maxLength: 50,
                defaultValue: void 0
            },
            Hd: {
                id: "socialAction",
                name: "sa",
                valueType: "text",
                maxLength: 50,
                defaultValue: void 0
            },
            Jd: {
                id: "socialTarget",
                name: "st",
                valueType: "text",
                maxLength: 2048,
                defaultValue: void 0
            },
            Sd: {
                id: "transactionId",
                name: "ti",
                valueType: "text",
                maxLength: 500,
                defaultValue: void 0
            },
            Rd: {
                id: "transactionAffiliation",
                name: "ta",
                valueType: "text",
                maxLength: 500,
                defaultValue: void 0
            },
            Td: {
                id: "transactionRevenue",
                name: "tr",
                valueType: "currency",
                maxLength: void 0,
                defaultValue: void 0
            },
            Ud: {
                id: "transactionShipping",
                name: "ts",
                valueType: "currency",
                maxLength: void 0,
                defaultValue: void 0
            },
            Vd: {
                id: "transactionTax",
                name: "tt",
                valueType: "currency",
                maxLength: void 0,
                defaultValue: void 0
            },
            dd: {
                id: "currencyCode",
                name: "cu",
                valueType: "text",
                maxLength: 10,
                defaultValue: void 0
            },
            td: {
                id: "itemPrice",
                name: "ip",
                valueType: "currency",
                maxLength: void 0,
                defaultValue: void 0
            },
            ud: {
                id: "itemQuantity",
                name: "iq",
                valueType: "integer",
                maxLength: void 0,
                defaultValue: void 0
            },
            rd: {
                id: "itemCode",
                name: "ic",
                valueType: "text",
                maxLength: 500,
                defaultValue: void 0
            },
            sd: {
                id: "itemName",
                name: "in",
                valueType: "text",
                maxLength: 500,
                defaultValue: void 0
            },
            qd: {
                id: "itemCategory",
                name: "iv",
                valueType: "text",
                maxLength: 500,
                defaultValue: void 0
            },
            bd: {
                id: "campaignSource",
                name: "cs",
                valueType: "text",
                maxLength: 100,
                defaultValue: void 0
            },
            $c: {
                id: "campaignMedium",
                name: "cm",
                valueType: "text",
                maxLength: 50,
                defaultValue: void 0
            },
            ad: {
                id: "campaignName",
                name: "cn",
                valueType: "text",
                maxLength: 100,
                defaultValue: void 0
            },
            Zc: {
                id: "campaignKeyword",
                name: "ck",
                valueType: "text",
                maxLength: 500,
                defaultValue: void 0
            },
            Xc: {
                id: "campaignContent",
                name: "cc",
                valueType: "text",
                maxLength: 500,
                defaultValue: void 0
            },
            Yc: {
                id: "campaignId",
                name: "ci",
                valueType: "text",
                maxLength: 100,
                defaultValue: void 0
            },
            od: {
                id: "gclid",
                name: "gclid",
                valueType: "text",
                maxLength: void 0,
                defaultValue: void 0
            },
            ed: {
                id: "dclid",
                name: "dclid",
                valueType: "text",
                maxLength: void 0,
                defaultValue: void 0
            },
            zd: {
                id: "pageLoadTime",
                name: "plt",
                valueType: "integer",
                maxLength: void 0,
                defaultValue: void 0
            },
            gd: {
                id: "dnsTime",
                name: "dns",
                valueType: "integer",
                maxLength: void 0,
                defaultValue: void 0
            },
            Kd: {
                id: "tcpConnectTime",
                name: "tcp",
                valueType: "integer",
                maxLength: void 0,
                defaultValue: void 0
            },
            Fd: {
                id: "serverResponseTime",
                name: "srt",
                valueType: "integer",
                maxLength: void 0,
                defaultValue: void 0
            },
            yd: {
                id: "pageDownloadTime",
                name: "pdt",
                valueType: "integer",
                maxLength: void 0,
                defaultValue: void 0
            },
            Bd: {
                id: "redirectResponseTime",
                name: "rrt",
                valueType: "integer",
                maxLength: void 0,
                defaultValue: void 0
            },
            Ld: {
                id: "timingCategory",
                name: "utc",
                valueType: "text",
                maxLength: 150,
                defaultValue: void 0
            },
            Od: {
                id: "timingVar",
                name: "utv",
                valueType: "text",
                maxLength: 500,
                defaultValue: void 0
            },
            Nd: {
                id: "timingValue",
                name: "utt",
                valueType: "integer",
                maxLength: void 0,
                defaultValue: void 0
            },
            Md: {
                id: "timingLabel",
                name: "utl",
                valueType: "text",
                maxLength: 500,
                defaultValue: void 0
            },
            md: {
                id: "exDescription",
                name: "exd",
                valueType: "text",
                maxLength: 150,
                defaultValue: void 0
            },
            nd: {
                id: "exFatal",
                name: "exf",
                valueType: "boolean",
                maxLength: void 0,
                defaultValue: "1"
            }
        },
        Y = function(a) {
            if (1 > a || 200 < a) throw Error("Expected dimension index range 1-200, but was : " + a);
            return {
                id: "dimension" + a,
                name: "cd" + a,
                valueType: "text",
                maxLength: 150,
                defaultValue: void 0
            }
        },
        Z = function(a) {
            if (1 > a || 200 < a) throw Error("Expected metric index range 1-200, but was : " + a);
            return {
                id: "metric" + a,
                name: "cm" + a,
                valueType: "integer",
                maxLength: void 0,
                defaultValue: void 0
            }
        },
        $ = function(a) {
            return 1 > a ? "0" : 3 > a ? "1-2" : (a = Math.floor(Math.log(a - 1) / Math.log(2)), Math.pow(2, a) + 1 + "-" + Math.pow(2, a + 1))
        },
        _ = function(a, b) {
            for (var c = 0,
                    d = a.length - 1,
                    e = 0; c <= d;) {
                var f = Math.floor((c + d) / 2),
                    e = a[f];
                if (b <= e) {
                    if (d = 0 == f ? 0 : a[f - 1], b > d) return (d + 1).toString() + "-" + e.toString();
                    d = f - 1
                } else if (b > e) {
                    if (f >= a.length - 1) return (a[a.length - 1] + 1).toString() + "+";
                    c = f + 1
                }
            }
            return "<= 0"
        },
        aa = function() {
            this.ab = []
        },
        ba = function() {
            return new aa
        };
    a = aa.prototype,
        a.when = function(a) {
            return this.ab.push(a),
                this
        },
        a.zb = function(a) {
            var b = arguments;
            return this.when(function(a) {
                    return 0 <= v(b, a.Gb())
                }),
                this
        },
        a.Oc = function(a, b) {
            var c = C(arguments, 1);
            return this.when(function(b) {
                    return b = b.T().get(a),
                        0 <= v(c, b)
                }),
                this
        },
        a.xb = function(a, b) {
            if (k(this.e)) throw Error("Filter has already been set.");
            return this.e = k(b) ? n(a, b) : a,
                this
        },
        a.Ca = function() {
            if (0 == this.ab.length) throw Error("Must specify at least one predicate using #when or a helper method.");
            if (!k(this.e)) throw Error("Must specify a delegate filter using #applyFilter.");
            return n(function(a) {
                    y(this.ab,
                        function(b) {
                            return b(a)
                        }) && this.e(a)
                },
                this)
        };
    var ca = function() {
        this.Ab = !1,
            this.Bb = "",
            this.qb = !1,
            this.za = null
    };
    ca.prototype.wc = function(a) {
            return this.Ab = !0,
                this.Bb = a || " - ",
                this
        },
        ca.prototype.Nc = function() {
            return this.qb = !0,
                this
        },
        ca.prototype.Ec = function() {
            return da(this, $)
        },
        ca.prototype.Fc = function(a) {
            return da(this, o(_, a))
        };
    var da = function(a, b) {
        if (null != a.za) throw Error("LabelerBuilder: Only one labeling strategy may be used.");
        return a.za = n(function(a) {
                    var c = a.T().get(W),
                        d = a.T().get(V);
                    i(c) && (c = b(c), null != d && this.Ab && (c = d + this.Bb + c), a.T().set(V, c))
                },
                a),
            a
    };
    ca.prototype.Ca = function() {
        if (null == this.za) throw Error("LabelerBuilder: a labeling strategy must be specified prior to calling build().");
        return ba().zb("event").xb(n(function(a) {
                this.za(a),
                    this.qb && a.T().remove(W)
            },
            this)).Ca()
    };
    var ea = function(a, b) {
            var c = Array.prototype.slice.call(arguments),
                d = c.shift();
            if ("undefined" == typeof d) throw Error("[goog.string.format] Template required");
            return d.replace(/%([0\-\ \+]*)(\d+)?(\.(\d+))?([%sfdiu])/g,
                function(a, b, d, e, f, g, h, i) {
                    if ("%" == g) return "%";
                    var j = c.shift();
                    if ("undefined" == typeof j) throw Error("[goog.string.format] Not enough arguments");
                    return arguments[0] = j,
                        fa[g].apply(null, arguments)
                })
        },
        fa = {
            s: function(a, b, c) {
                return isNaN(c) || "" == c || a.length >= c ? a : a = -1 < b.indexOf("-", 0) ? a + Array(c - a.length + 1).join(" ") : Array(c - a.length + 1).join(" ") + a
            },
            f: function(a, b, c, d, e) {
                d = a.toString(),
                    isNaN(e) || "" == e || (d = a.toFixed(e));
                var f;
                return f = 0 > a ? "-" : 0 <= b.indexOf("+") ? "+" : 0 <= b.indexOf(" ") ? " " : "",
                    0 <= a && (d = f + d),
                    isNaN(c) || d.length >= c ? d : (d = isNaN(e) ? Math.abs(a).toString() : Math.abs(a).toFixed(e), a = c - d.length - f.length, d = 0 <= b.indexOf("-", 0) ? f + d + Array(a + 1).join(" ") : f + Array(a + 1).join(0 <= b.indexOf("0", 0) ? "0" : " ") + d)
            },
            d: function(a, b, c, d, e, f, g, h) {
                return fa.f(parseInt(a, 10), b, c, d, 0, f, g, h)
            }
        };
    fa.i = fa.d,
        fa.u = fa.d;
    var ga = function(a) {
            if ("function" == typeof a.t) return a.t();
            if (h(a)) return a.split("");
            if (g(a)) {
                for (var b = [], c = a.length, d = 0; d < c; d++) b.push(a[d]);
                return b
            }
            return G(a)
        },
        ha = function(a, b) {
            if ("function" == typeof a.forEach) a.forEach(b, void 0);
            else if (g(a) || h(a)) w(a, b, void 0);
            else {
                var c;
                if ("function" == typeof a.F) c = a.F();
                else if ("function" != typeof a.t)
                    if (g(a) || h(a)) {
                        c = [];
                        for (var d = a.length,
                                e = 0; e < d; e++) c.push(e)
                    } else c = H(a);
                else c = void 0;
                for (var d = ga(a), e = d.length, f = 0; f < e; f++) b.call(void 0, d[f], c && c[f], a)
            }
        },
        ia = function(a) {
            this.B = new L;
            for (var b = arguments,
                    c = 0; c < b.length; c += 2) this.set(b[c], b[c + 1])
        };
    ia.prototype.set = function(a, b) {
            this.B.set(a.name, {
                key: a,
                value: b
            })
        },
        ia.prototype.remove = function(a) {
            this.B.remove(a.name)
        },
        ia.prototype.get = function(a) {
            return a = this.B.get(a.name, null),
                null === a ? null : a.value
        },
        ia.prototype.ia = function(a) {
            this.B.ia(a.B)
        };
    var ja = function(a, b) {
        w(a.B.t(),
            function(a) {
                b(a.key, a.value)
            })
    };
    ia.prototype.Jb = function() {
            var a = {};
            return ja(this,
                    function(b, c) {
                        a[b.id] = c
                    }),
                a
        },
        ia.prototype.clone = function() {
            var a = new ia;
            return a.B = this.B.clone(),
                a
        },
        ia.prototype.toString = function() {
            var a = {};
            return ja(this,
                    function(b, c) {
                        a[b.id] = c
                    }),
                JSON.stringify(a)
        };
    var ka = function(a) {
        this.e = a
    };
    a = ka.prototype,
        a.xc = function(a) {
            var b = new ka(n(this.P, this));
            return b.I = T,
                b.N = a,
                b
        },
        a.action = function(a) {
            var b = new ka(n(this.P, this));
            return b.I = U,
                b.N = a,
                b
        },
        a.label = function(a) {
            var b = new ka(n(this.P, this));
            return b.I = V,
                b.N = a,
                b
        },
        a.value = function(a) {
            var b = new ka(n(this.P, this));
            return b.I = W,
                b.N = a,
                b
        },
        a.yc = function(a, b) {
            var c = new ka(n(this.P, this));
            return c.I = Y(a),
                c.N = b,
                c
        },
        a.Dc = function(a, b) {
            var c = new ka(n(this.P, this));
            return c.I = Z(a),
                c.N = b,
                c
        },
        a.send = function(a) {
            var b = new ia;
            return this.P(b),
                a.send("event", b)
        },
        a.P = function(a) {
            null != this.I && null != this.N && !a.B.Q(this.I.name) && a.set(this.I, this.N),
                k(this.e) && this.e(a)
        };
    var la = new ka(d),
        ma = function() {
            this.Y = this.Y,
                this.Da = this.Da
        };
    ma.prototype.Y = !1,
        ma.prototype.xa = function() {
            this.Y || (this.Y = !0, this.l())
        },
        ma.prototype.l = function() {
            if (this.Da)
                for (; this.Da.length;) this.Da.shift()()
        };
    var na = function(a, b) {
        this.type = a,
            this.currentTarget = this.target = b,
            this.defaultPrevented = this.U = !1,
            this.kb = !0
    };
    na.prototype.l = function() {},
        na.prototype.xa = function() {},
        na.prototype.preventDefault = function() {
            this.defaultPrevented = !0,
                this.kb = !1
        };
    var oa = function(a) {
        return oa[" "](a),
            a
    };
    oa[" "] = d;
    var pa;
    a: {
        var qa = c.navigator;
        if (qa) {
            var ra = qa.userAgent;
            if (ra) {
                pa = ra;
                break a
            }
        }
        pa = ""
    }
    var sa = function(a) {
            return -1 != pa.indexOf(a)
        },
        ta = sa("Opera") || sa("OPR"),
        ua = sa("Trident") || sa("MSIE"),
        va = sa("Gecko") && -1 == pa.toLowerCase().indexOf("webkit") && !(sa("Trident") || sa("MSIE")),
        wa = -1 != pa.toLowerCase().indexOf("webkit"),
        xa = function() {
            var a = c.document;
            return a ? a.documentMode : void 0
        },
        ya = function() {
            var a, b = "";
            return ta && c.opera ? (b = c.opera.version, j(b) ? b() : b) : (va ? a = /rv\:([^\);]+)(\)|;)/ : ua ? a = /\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/ : wa && (a = /WebKit\/(\S+)/), a && (b = (b = a.exec(pa)) ? b[1] : ""), ua && (a = xa(), a > parseFloat(b)) ? String(a) : b)
        }(),
        za = {},
        Aa = function(a) {
            var b;
            if (!(b = za[a])) {
                b = 0;
                for (var c = String(ya).replace(/^[\s\xa0]+|[\s\xa0]+$/g, "").split("."), d = String(a).replace(/^[\s\xa0]+|[\s\xa0]+$/g, "").split("."), e = Math.max(c.length, d.length), f = 0; 0 == b && f < e; f++) {
                    var g = c[f] || "",
                        h = d[f] || "",
                        i = RegExp("(\\d*)(\\D*)", "g"),
                        j = RegExp("(\\d*)(\\D*)", "g");
                    do {
                        var k = i.exec(g) || ["", "", ""],
                            l = j.exec(h) || ["", "", ""];
                        if (0 == k[0].length && 0 == l[0].length) break;
                        b = t(0 == k[1].length ? 0 : parseInt(k[1], 10), 0 == l[1].length ? 0 : parseInt(l[1], 10)) || t(0 == k[2].length, 0 == l[2].length) || t(k[2], l[2])
                    } while (0 == b)
                }
                b = za[a] = 0 <= b
            }
            return b
        },
        Ba = c.document,
        Ca = Ba && ua ? xa() || ("CSS1Compat" == Ba.compatMode ? parseInt(ya, 10) : 5) : void 0,
        Da = !ua || ua && 9 <= Ca,
        Ea = ua && !Aa("9"),
        Fa = !wa || Aa("528"),
        Ga = va && Aa("1.9b") || ua && Aa("8") || ta && Aa("9.5") || wa && Aa("528"),
        Ha = va && !Aa("8") || ua && !Aa("9"),
        Ia = function(a, b) {
            if (na.call(this, a ? a.type : ""), this.relatedTarget = this.currentTarget = this.target = null, this.charCode = this.keyCode = this.button = this.screenY = this.screenX = this.clientY = this.clientX = this.offsetY = this.offsetX = 0, this.metaKey = this.shiftKey = this.altKey = this.ctrlKey = !1, this.Db = this.state = null, a) {
                var c = this.type = a.type;
                this.target = a.target || a.srcElement,
                    this.currentTarget = b;
                var d = a.relatedTarget;
                if (d) {
                    if (va) {
                        var e;
                        a: {
                            try {
                                oa(d.nodeName),
                                    e = !0;
                                break a
                            } catch (f) {}
                            e = !1
                        }
                        e || (d = null)
                    }
                } else "mouseover" == c ? d = a.fromElement : "mouseout" == c && (d = a.toElement);
                this.relatedTarget = d,
                    this.offsetX = wa || void 0 !== a.offsetX ? a.offsetX : a.layerX,
                    this.offsetY = wa || void 0 !== a.offsetY ? a.offsetY : a.layerY,
                    this.clientX = void 0 !== a.clientX ? a.clientX : a.pageX,
                    this.clientY = void 0 !== a.clientY ? a.clientY : a.pageY,
                    this.screenX = a.screenX || 0,
                    this.screenY = a.screenY || 0,
                    this.button = a.button,
                    this.keyCode = a.keyCode || 0,
                    this.charCode = a.charCode || ("keypress" == c ? a.keyCode : 0),
                    this.ctrlKey = a.ctrlKey,
                    this.altKey = a.altKey,
                    this.shiftKey = a.shiftKey,
                    this.metaKey = a.metaKey,
                    this.state = a.state,
                    this.Db = a,
                    a.defaultPrevented && this.preventDefault()
            }
        };
    r(Ia, na),
        Ia.prototype.preventDefault = function() {
            Ia.L.preventDefault.call(this);
            var a = this.Db;
            if (a.preventDefault) a.preventDefault();
            else if (a.returnValue = !1, Ea) try {
                (a.ctrlKey || 112 <= a.keyCode && 123 >= a.keyCode) && (a.keyCode = -1)
            } catch (b) {}
        },
        Ia.prototype.l = function() {};
    var Ja = "closure_listenable_" + (1e6 * Math.random() | 0),
        Ka = function(a) {
            return !(!a || !a[Ja])
        },
        La = 0,
        Ma = function(a, b, c, d, e) {
            this.O = a,
                this.proxy = null,
                this.src = b,
                this.type = c,
                this.pa = !!d,
                this.sa = e,
                this.key = ++La,
                this.removed = this.qa = !1
        },
        Na = function(a) {
            a.removed = !0,
                a.O = null,
                a.proxy = null,
                a.src = null,
                a.sa = null
        },
        Oa = function(a) {
            this.src = a,
                this.j = {},
                this.Z = 0
        };
    Oa.prototype.add = function(a, b, c, d, e) {
            var f = a.toString();
            a = this.j[f],
                a || (a = this.j[f] = [], this.Z++);
            var g = Qa(a, b, d, e);
            return -1 < g ? (b = a[g], c || (b.qa = !1)) : (b = new Ma(b, this.src, f, (!!d), e), b.qa = c, a.push(b)),
                b
        },
        Oa.prototype.remove = function(a, b, c, d) {
            if (a = a.toString(), !(a in this.j)) return !1;
            var e = this.j[a];
            return b = Qa(e, b, c, d), -1 < b && (Na(e[b]), u.splice.call(e, b, 1), 0 == e.length && (delete this.j[a], this.Z--), !0)
        };
    var Pa = function(a, b) {
        var c = b.type;
        if (!(c in a.j)) return !1;
        var d = A(a.j[c], b);
        return d && (Na(b), 0 == a.j[c].length && (delete a.j[c], a.Z--)),
            d
    };
    Oa.prototype.removeAll = function(a) {
            a = a && a.toString();
            var b, c = 0;
            for (b in this.j)
                if (!a || b == a) {
                    for (var d = this.j[b], e = 0; e < d.length; e++) ++c,
                        Na(d[e]);
                    delete this.j[b],
                        this.Z--
                }
            return c
        },
        Oa.prototype.X = function(a, b, c, d) {
            a = this.j[a.toString()];
            var e = -1;
            return a && (e = Qa(a, b, c, d)), -1 < e ? a[e] : null
        };
    var Qa = function(a, b, c, d) {
            for (var e = 0; e < a.length; ++e) {
                var f = a[e];
                if (!f.removed && f.O == b && f.pa == !!c && f.sa == d) return e
            }
            return -1
        },
        Ra = "closure_lm_" + (1e6 * Math.random() | 0),
        Sa = {},
        Ta = 0,
        Ua = function(a, b, c, d, e) {
            if (f(b)) {
                for (var g = 0; g < b.length; g++) Ua(a, b[g], c, d, e);
                return null
            }
            return c = eb(c),
                Ka(a) ? a.listen(b, c, d, e) : Va(a, b, c, !1, d, e)
        },
        Va = function(a, b, c, d, e, f) {
            if (!b) throw Error("Invalid event type");
            var g = !!e,
                h = cb(a);
            return h || (a[Ra] = h = new Oa(a)),
                c = h.add(b, c, d, e, f),
                c.proxy ? c : (d = Wa(), c.proxy = d, d.src = a, d.O = c, a.addEventListener ? a.addEventListener(b.toString(), d, g) : a.attachEvent($a(b.toString()), d), Ta++, c)
        },
        Wa = function() {
            var a = bb,
                b = Da ?
                function(c) {
                    return a.call(b.src, b.O, c)
                } : function(c) {
                    if (c = a.call(b.src, b.O, c), !c) return c
                };
            return b
        },
        Xa = function(a, b, c, d, e) {
            if (f(b)) {
                for (var g = 0; g < b.length; g++) Xa(a, b[g], c, d, e);
                return null
            }
            return c = eb(c),
                Ka(a) ? a.bb(b, c, d, e) : Va(a, b, c, !0, d, e)
        },
        Ya = function(a, b, c, d, e) {
            if (f(b))
                for (var g = 0; g < b.length; g++) Ya(a, b[g], c, d, e);
            else c = eb(c),
                Ka(a) ? a.Va(b, c, d, e) : a && (a = cb(a)) && (b = a.X(b, c, !!d, e)) && Za(b)
        },
        Za = function(a) {
            if (i(a) || !a || a.removed) return !1;
            var b = a.src;
            if (Ka(b)) return Pa(b.A, a);
            var c = a.type,
                d = a.proxy;
            return b.removeEventListener ? b.removeEventListener(c, d, a.pa) : b.detachEvent && b.detachEvent($a(c), d),
                Ta--,
                (c = cb(b)) ? (Pa(c, a), 0 == c.Z && (c.src = null, b[Ra] = null)) : Na(a), !0
        },
        $a = function(a) {
            return a in Sa ? Sa[a] : Sa[a] = "on" + a
        },
        _a = function(a, b, c, d) {
            var e = 1;
            if ((a = cb(a)) && (b = a.j[b.toString()]))
                for (b = b.concat(), a = 0; a < b.length; a++) {
                    var f = b[a];
                    f && f.pa == c && !f.removed && (e &= !1 !== ab(f, d))
                }
            return Boolean(e)
        },
        ab = function(a, b) {
            var c = a.O,
                d = a.sa || a.src;
            return a.qa && Za(a),
                c.call(d, b)
        },
        bb = function(a, b) {
            if (a.removed) return !0;
            if (!Da) {
                var d;
                if (!(d = b)) a: {
                    d = ["window", "event"];
                    for (var e, f = c; e = d.shift();) {
                        if (null == f[e]) {
                            d = null;
                            break a
                        }
                        f = f[e]
                    }
                    d = f
                }
                if (e = d, d = new Ia(e, this), f = !0, !(0 > e.keyCode || void 0 != e.returnValue)) {
                    a: {
                        var g = !1;
                        if (0 == e.keyCode) try {
                            e.keyCode = -1;
                            break a
                        } catch (h) {
                            g = !0
                        }(g || void 0 == e.returnValue) && (e.returnValue = !0)
                    }
                    for (e = [], g = d.currentTarget; g; g = g.parentNode) e.push(g);
                    for (var g = a.type,
                            i = e.length - 1; !d.U && 0 <= i; i--) d.currentTarget = e[i],
                    f &= _a(e[i], g, !0, d);
                    for (i = 0; !d.U && i < e.length; i++) d.currentTarget = e[i],
                    f &= _a(e[i], g, !1, d)
                }
                return f
            }
            return ab(a, new Ia(b, this))
        },
        cb = function(a) {
            return a = a[Ra],
                a instanceof Oa ? a : null
        },
        db = "__closure_events_fn_" + (1e9 * Math.random() >>> 0),
        eb = function(a) {
            return j(a) ? a : (a[db] || (a[db] = function(b) {
                return a.handleEvent(b)
            }), a[db])
        },
        fb = function() {
            ma.call(this),
                this.A = new Oa(this),
                this.kc = this,
                this.Qa = null
        };
    r(fb, ma),
        fb.prototype[Ja] = !0,
        a = fb.prototype,
        a.addEventListener = function(a, b, c, d) {
            Ua(this, a, b, c, d)
        },
        a.removeEventListener = function(a, b, c, d) {
            Ya(this, a, b, c, d)
        },
        a.dispatchEvent = function(a) {
            var b, c = this.Qa;
            if (c) {
                b = [];
                for (var d = 1; c; c = c.Qa) b.push(c),
                    ++d
            }
            if (c = this.kc, d = a.type || a, h(a)) a = new na(a, c);
            else if (a instanceof na) a.target = a.target || c;
            else {
                var e = a;
                a = new na(d, c),
                    K(a, e)
            }
            var f, e = !0;
            if (b)
                for (var g = b.length - 1; !a.U && 0 <= g; g--) f = a.currentTarget = b[g],
                    e = gb(f, d, !0, a) && e;
            if (a.U || (f = a.currentTarget = c, e = gb(f, d, !0, a) && e, a.U || (e = gb(f, d, !1, a) && e)), b)
                for (g = 0; !a.U && g < b.length; g++) f = a.currentTarget = b[g],
                    e = gb(f, d, !1, a) && e;
            return e
        },
        a.l = function() {
            fb.L.l.call(this),
                this.A && this.A.removeAll(void 0),
                this.Qa = null
        },
        a.listen = function(a, b, c, d) {
            return this.A.add(String(a), b, !1, c, d)
        },
        a.bb = function(a, b, c, d) {
            return this.A.add(String(a), b, !0, c, d)
        },
        a.Va = function(a, b, c, d) {
            return this.A.remove(String(a), b, c, d)
        };
    var gb = function(a, b, c, d) {
        if (b = a.A.j[String(b)], !b) return !0;
        b = b.concat();
        for (var e = !0,
                f = 0; f < b.length; ++f) {
            var g = b[f];
            if (g && !g.removed && g.pa == c) {
                var h = g.O,
                    i = g.sa || g.src;
                g.qa && Pa(a.A, g),
                    e = !1 !== h.call(i, d) && e
            }
        }
        return e && 0 != d.kb
    };
    fb.prototype.X = function(a, b, c, d) {
        return this.A.X(String(a), b, c, d)
    };
    var hb, ib, jb = function(a) {
            c.setTimeout(function() {
                    throw a
                },
                0)
        },
        kb = function() {
            var a = c.MessageChannel;
            if ("undefined" == typeof a && "undefined" != typeof window && window.postMessage && window.addEventListener && (a = function() {
                    var a = document.createElement("iframe");
                    a.style.display = "none",
                        a.src = "",
                        document.documentElement.appendChild(a);
                    var b = a.contentWindow,
                        a = b.document;
                    a.open(),
                        a.write(""),
                        a.close();
                    var c = "callImmediate" + Math.random(),
                        d = "file:" == b.location.protocol ? "*" : b.location.protocol + "//" + b.location.host,
                        a = n(function(a) {
                                a.origin != d && a.data != c || this.port1.onmessage()
                            },
                            this);
                    b.addEventListener("message", a, !1),
                        this.port1 = {},
                        this.port2 = {
                            postMessage: function() {
                                b.postMessage(c, d)
                            }
                        }
                }), "undefined" != typeof a && !sa("Trident") && !sa("MSIE")) {
                var b = new a,
                    d = {},
                    e = d;
                return b.port1.onmessage = function() {
                        d = d.next;
                        var a = d.Fb;
                        d.Fb = null,
                            a()
                    },
                    function(a) {
                        e.next = {
                                Fb: a
                            },
                            e = e.next,
                            b.port2.postMessage(0)
                    }
            }
            return "undefined" != typeof document && "onreadystatechange" in document.createElement("script") ?
                function(a) {
                    var b = document.createElement("script");
                    b.onreadystatechange = function() {
                            b.onreadystatechange = null,
                                b.parentNode.removeChild(b),
                                b = null,
                                a(),
                                a = null
                        },
                        document.documentElement.appendChild(b)
                } : function(a) {
                    c.setTimeout(a, 0)
                }
        },
        lb = function(a, b) {
            ib || mb(),
                nb || (ib(), nb = !0),
                ob.push(new qb(a, b))
        },
        mb = function() {
            if (c.Promise && c.Promise.resolve) {
                var a = c.Promise.resolve();
                ib = function() {
                    a.then(pb)
                }
            } else ib = function() {
                var a = pb;
                !j(c.setImmediate) || c.Window && c.Window.prototype.setImmediate == c.setImmediate ? (hb || (hb = kb()), hb(a)) : c.setImmediate(a)
            }
        },
        nb = !1,
        ob = [],
        pb = function() {
            for (; ob.length;) {
                var a = ob;
                ob = [];
                for (var b = 0; b < a.length; b++) {
                    var c = a[b];
                    try {
                        c.zc.call(c.scope)
                    } catch (d) {
                        jb(d)
                    }
                }
            }
            nb = !1
        },
        qb = function(a, b) {
            this.zc = a,
                this.scope = b
        },
        rb = function(a) {
            a.prototype.then = a.prototype.then,
                a.prototype.$goog_Thenable = !0
        },
        sb = function(a) {
            if (!a) return !1;
            try {
                return !!a.$goog_Thenable
            } catch (b) {
                return !1
            }
        },
        tb = function(a, b) {
            this.m = 0,
                this.v = void 0,
                this.n = this.o = null,
                this.ua = this.La = !1;
            try {
                var c = this;
                a.call(b,
                    function(a) {
                        xb(c, 2, a)
                    },
                    function(a) {
                        xb(c, 3, a)
                    })
            } catch (d) {
                xb(this, 3, d)
            }
        };
    tb.prototype.then = function(a, b, c) {
            return wb(this, j(a) ? a : null, j(b) ? b : null, c)
        },
        rb(tb),
        tb.prototype.cancel = function(a) {
            0 == this.m && lb(function() {
                    var b = new Db(a);
                    ub(this, b)
                },
                this)
        };
    var ub = function(a, b) {
            if (0 == a.m)
                if (a.o) {
                    var c = a.o;
                    if (c.n) {
                        for (var d, e = 0,
                                f = -1,
                                g = 0;
                            (d = c.n[g]) && !((d = d.wa) && (e++, d == a && (f = g), 0 <= f && 1 < e)); g++);
                        0 <= f && (0 == c.m && 1 == e ? ub(c, b) : (e = c.n.splice(f, 1)[0], Ab(c), e.Ma(b)))
                    }
                } else xb(a, 3, b)
        },
        vb = function(a, b) {
            a.n && a.n.length || 2 != a.m && 3 != a.m || zb(a),
                a.n || (a.n = []),
                a.n.push(b)
        },
        wb = function(a, b, c, d) {
            var e = {
                wa: null,
                jb: null,
                Ma: null
            };
            return e.wa = new tb(function(a, f) {
                    e.jb = b ?
                        function(c) {
                            try {
                                var e = b.call(d, c);
                                a(e)
                            } catch (g) {
                                f(g)
                            }
                        } : a,
                        e.Ma = c ?
                        function(b) {
                            try {
                                var e = c.call(d, b);
                                void 0 === e && b instanceof Db ? f(b) : a(e)
                            } catch (g) {
                                f(g)
                            }
                        } : f
                }),
                e.wa.o = a,
                vb(a, e),
                e.wa
        };
    tb.prototype.vb = function(a) {
            this.m = 0,
                xb(this, 2, a)
        },
        tb.prototype.wb = function(a) {
            this.m = 0,
                xb(this, 3, a)
        };
    var xb = function(a, b, c) {
            if (0 == a.m) {
                if (a == c) b = 3,
                    c = new TypeError("Promise cannot resolve to itself");
                else {
                    if (sb(c)) return a.m = 1,
                        void c.then(a.vb, a.wb, a);
                    if (k(c)) try {
                        var d = c.then;
                        if (j(d)) return void yb(a, c, d)
                    } catch (e) {
                        b = 3,
                            c = e
                    }
                }
                a.v = c,
                    a.m = b,
                    zb(a),
                    3 != b || c instanceof Db || Bb(a, c)
            }
        },
        yb = function(a, b, c) {
            a.m = 1;
            var d = !1,
                e = function(b) {
                    d || (d = !0, a.vb(b))
                },
                f = function(b) {
                    d || (d = !0, a.wb(b))
                };
            try {
                c.call(b, e, f)
            } catch (g) {
                f(g)
            }
        },
        zb = function(a) {
            a.La || (a.La = !0, lb(a.uc, a))
        };
    tb.prototype.uc = function() {
        for (; this.n && this.n.length;) {
            var a = this.n;
            this.n = [];
            for (var b = 0; b < a.length; b++) {
                var c = a[b],
                    d = this.v;
                2 == this.m ? c.jb(d) : (Ab(this), c.Ma(d))
            }
        }
        this.La = !1
    };
    var Ab = function(a) {
            for (; a && a.ua; a = a.o) a.ua = !1
        },
        Bb = function(a, b) {
            a.ua = !0,
                lb(function() {
                    a.ua && Cb.call(null, b)
                })
        },
        Cb = jb,
        Db = function(a) {
            s.call(this, a)
        };
    r(Db, s),
        Db.prototype.name = "cancel";
    var Eb = function(a, b) {
        this.ja = [],
            this.hb = a,
            this.gb = b || null,
            this.W = this.C = !1,
            this.v = void 0,
            this.Ka = this.Lb = this.Ja = !1,
            this.ka = 0,
            this.o = null,
            this.Ia = 0
    };
    Eb.prototype.cancel = function(a) {
            if (this.C) this.v instanceof Eb && this.v.cancel();
            else {
                if (this.o) {
                    var b = this.o;
                    delete this.o,
                        a ? b.cancel(a) : (b.Ia--, 0 >= b.Ia && b.cancel())
                }
                this.hb ? this.hb.call(this.gb, this) : this.Ka = !0,
                    this.C || this.w(new Ob)
            }
        },
        Eb.prototype.ib = function(a, b) {
            this.Ja = !1,
                Fb(this, a, b)
        };
    var Fb = function(a, b, c) {
            a.C = !0,
                a.v = c,
                a.W = !b,
                Kb(a)
        },
        Gb = function(a) {
            if (a.C) {
                if (!a.Ka) throw new Nb;
                a.Ka = !1
            }
        };
    Eb.prototype.G = function(a) {
            Gb(this),
                Fb(this, !0, a)
        },
        Eb.prototype.w = function(a) {
            Gb(this),
                Fb(this, !1, a)
        },
        Eb.prototype.J = function(a, b) {
            return Hb(this, a, null, b)
        };
    var Hb = function(a, b, c, d) {
        return a.ja.push([b, c, d]),
            a.C && Kb(a),
            a
    };
    Eb.prototype.then = function(a, b, c) {
            var d, e, f = new tb(function(a, b) {
                d = a,
                    e = b
            });
            return Hb(this, d,
                    function(a) {
                        a instanceof Ob ? f.cancel() : e(a)
                    }),
                f.then(a, b, c)
        },
        rb(Eb);
    var Ib = function(a) {
            var b = new Eb;
            return Hb(a, b.G, b.w, b),
                b
        },
        Jb = function(a) {
            return x(a.ja,
                function(a) {
                    return j(a[1])
                })
        },
        Kb = function(a) {
            if (a.ka && a.C && Jb(a)) {
                var b = a.ka,
                    d = Qb[b];
                d && (c.clearTimeout(d.ma), delete Qb[b]),
                    a.ka = 0
            }
            a.o && (a.o.Ia--, delete a.o);
            for (var b = a.v,
                    e = d = !1; a.ja.length && !a.Ja;) {
                var f = a.ja.shift(),
                    g = f[0],
                    h = f[1],
                    f = f[2];
                if (g = a.W ? h : g) try {
                    var i = g.call(f || a.gb, b);
                    void 0 !== i && (a.W = a.W && (i == b || i instanceof Error), a.v = b = i),
                        sb(b) && (e = !0, a.Ja = !0)
                } catch (j) {
                    b = j,
                        a.W = !0,
                        Jb(a) || (d = !0)
                }
            }
            a.v = b,
                e && (i = n(a.ib, a, !0), e = n(a.ib, a, !1), b instanceof Eb ? (Hb(b, i, e), b.Lb = !0) : b.then(i, e)),
                d && (b = new Pb(b), Qb[b.ma] = b, a.ka = b.ma)
        },
        Lb = function(a) {
            var b = new Eb;
            return b.G(a),
                b
        },
        Mb = function() {
            var a = Kc,
                b = new Eb;
            return b.w(a),
                b
        },
        Nb = function() {
            s.call(this)
        };
    r(Nb, s),
        Nb.prototype.message = "Deferred has already fired",
        Nb.prototype.name = "AlreadyCalledError";
    var Ob = function() {
        s.call(this)
    };
    r(Ob, s),
        Ob.prototype.message = "Deferred was canceled",
        Ob.prototype.name = "CanceledError";
    var Pb = function(a) {
        this.ma = c.setTimeout(n(this.pc, this), 0),
            this.ga = a
    };
    Pb.prototype.pc = function() {
        throw delete Qb[this.ma],
            this.ga
    };
    var Qb = {},
        Rb = function(a) {
            this.$a = [],
                this.e = a
        };
    Rb.prototype.S = function(a) {
            if (!j(a)) throw Error("Invalid filter. Must be a function.");
            this.$a.push(a)
        },
        Rb.prototype.send = function(a, b) {
            for (var c = new Sb(a, b), d = 0; d < this.$a.length && (this.$a[d](c), !c.Za); d++);
            return c.Za ? Lb() : this.e.send(a, b)
        };
    var Sb = function(a, b) {
        this.rc = a,
            this.qc = b,
            this.Za = !1
    };
    Sb.prototype.Gb = function() {
            return this.rc
        },
        Sb.prototype.T = function() {
            return this.qc
        },
        Sb.prototype.cancel = function() {
            this.Za = !0
        };
    var Tb = function(a, b) {
        this.width = a,
            this.height = b
    };
    Tb.prototype.clone = function() {
            return new Tb(this.width, this.height)
        },
        Tb.prototype.floor = function() {
            return this.width = Math.floor(this.width),
                this.height = Math.floor(this.height),
                this
        }, !va && !ua || ua && ua && 9 <= Ca || va && Aa("1.9.1"),
        ua && Aa("9");
    var Ub = {
            id: "apiVersion",
            name: "v",
            valueType: "text",
            maxLength: void 0,
            defaultValue: void 0
        },
        Vb = {
            id: "appName",
            name: "an",
            valueType: "text",
            maxLength: 100,
            defaultValue: void 0
        },
        Wb = {
            id: "appVersion",
            name: "av",
            valueType: "text",
            maxLength: 100,
            defaultValue: void 0
        },
        Xb = {
            id: "clientId",
            name: "cid",
            valueType: "text",
            maxLength: void 0,
            defaultValue: void 0
        },
        Yb = {
            id: "language",
            name: "ul",
            valueType: "text",
            maxLength: 20,
            defaultValue: void 0
        },
        Zb = {
            id: "libVersion",
            name: "_v",
            valueType: "text",
            maxLength: void 0,
            defaultValue: void 0
        },
        $b = {
            id: "sampleRateOverride",
            name: "usro",
            valueType: "integer",
            maxLength: void 0,
            defaultValue: void 0
        },
        _b = {
            id: "screenColors",
            name: "sd",
            valueType: "text",
            maxLength: 20,
            defaultValue: void 0
        },
        ac = {
            id: "screenResolution",
            name: "sr",
            valueType: "text",
            maxLength: 20,
            defaultValue: void 0
        },
        bc = {
            id: "trackingId",
            name: "tid",
            valueType: "text",
            maxLength: void 0,
            defaultValue: void 0
        },
        cc = {
            id: "viewportSize",
            name: "vp",
            valueType: "text",
            maxLength: 20,
            defaultValue: void 0
        },
        dc = {
            Rc: Ub,
            Uc: Vb,
            Vc: Wb,
            cd: Xb,
            vd: Yb,
            wd: Zb,
            Cd: $b,
            Dd: _b,
            Ed: ac,
            Qd: bc,
            Xd: cc
        },
        ec = function(a) {
            if (!h(a)) return a;
            var b = fc(a, X);
            if (k(b)) return b;
            if (b = fc(a, dc), k(b)) return b;
            if (b = /^dimension(\d+)$/.exec(a), null !== b) return Y(parseInt(b[1], 10));
            if (b = /^metric(\d+)$/.exec(a), null !== b) return Z(parseInt(b[1], 10));
            throw Error(a + " is not a valid parameter name.")
        },
        fc = function(a, b) {
            var c = I(b,
                function(b) {
                    return b.id == a && "metric" != a && "dimension" != a
                });
            return k(c) ? c : null
        },
        gc = function(a, b) {
            this.Zb = b,
                this.q = b.Sa(),
                this.sb = new ia,
                this.Ya = !1
        };
    a = gc.prototype,
        a.set = function(a, b) {
            var c = ec(a);
            this.sb.set(c, b)
        },
        a.S = function(a) {
            this.Zb.S(a)
        },
        a.send = function(a, b) {
            if (a instanceof ka) return a.send(this);
            var c = this.sb.clone();
            return b instanceof ia ? c.ia(b) : k(b) && F(b,
                    function(a, b) {
                        null != a && c.set(ec(b), a)
                    },
                    this),
                this.Ya && (this.Ya = !1, c.set(R, "start")),
                this.q.send(a, c)
        },
        a.Gc = function(a) {
            var b = {
                description: a
            };
            return this.set(S, a),
                this.send("appview", b)
        },
        a.Hc = function(a, b, c, d) {
            return this.send("event", {
                eventCategory: a,
                eventAction: b,
                eventLabel: c,
                eventValue: d
            })
        },
        a.Jc = function(a, b, c) {
            return this.send("social", {
                socialNetwork: a,
                socialAction: b,
                socialTarget: c
            })
        },
        a.Ic = function(a, b) {
            return this.send("exception", {
                exDescription: a,
                exFatal: b
            })
        },
        a.Cb = function(a, b, c, d, e) {
            return this.send("timing", {
                timingCategory: a,
                timingVar: b,
                timingLabel: d,
                timingValue: c,
                sampleRateOverride: e
            })
        },
        a.Ac = function() {
            this.Ya = !0
        },
        a.Mc = function(a, b, c, d) {
            return new hc(this, a, b, c, d)
        };
    var hc = function(a, b, c, d, e) {
        this.yb = a,
            this.bc = b,
            this.ec = c,
            this.cc = d,
            this.V = e,
            this.dc = p()
    };
    hc.prototype.send = function() {
        var a = this.yb.Cb(this.bc, this.ec, p() - this.dc, this.cc, this.V);
        return this.yb = null,
            a
    };
    var ic = function(a, b, c, d, e) {
        this.ic = a,
            this.fc = b,
            this.gc = c,
            this.k = d,
            this.hc = e
    };
    ic.prototype.Cc = function(a) {
            var b = new gc(0, this.hc.create());
            return b.set(Zb, this.ic),
                b.set(Ub, 1),
                b.set(Vb, this.fc),
                b.set(Wb, this.gc),
                b.set(bc, a),
                a = window.navigator.language,
                b.set(Yb, a),
                a = screen.colorDepth + "-bit",
                b.set(_b, a),
                a = [screen.width, screen.height].join("x"),
                b.set(ac, a),
                a = window.document,
                a = "CSS1Compat" == a.compatMode ? a.documentElement : a.body,
                a = new Tb(a.clientWidth, a.clientHeight),
                a = [a.width, a.height].join("x"),
                b.set(cc, a),
                b
        },
        ic.prototype.Bc = function() {
            return Ib(this.k.ha)
        };
    var jc = function(a) {
        this.sc = a
    };
    jc.prototype.send = function(a, b) {
        return this.sc.push({
                Ub: a,
                Vb: b
            }),
            Lb()
    };
    var kc = function(a, b, c) {
        this.k = a,
            this.ra = [],
            this.M = {
                enabled: new jc(this.ra),
                disabled: c
            },
            this.q = this.M.enabled,
            Hb(Ib(this.k.ha), o(this.Pb, b), this.Ob, this)
    };
    kc.prototype.Pb = function(a) {
            this.M.enabled = a(),
                lc(this),
                w(this.ra,
                    function(a) {
                        this.send(a.Ub, a.Vb)
                    },
                    this),
                this.ra = null,
                rc(this.k, n(this.Xb, this))
        },
        kc.prototype.Ob = function() {
            this.q = this.M.enabled = this.M.disabled,
                this.ra = null
        },
        kc.prototype.send = function(a, b) {
            return this.q.send(a, b)
        };
    var lc = function(a) {
        a.q = a.k.va() ? a.M.enabled : a.M.disabled
    };
    kc.prototype.Xb = function(a) {
        switch (a) {
            case "analytics.tracking-permitted":
                lc(this)
        }
    };
    var mc = function(a, b, c, d, e, f) {
        for (Eb.call(this, e, f), this.Na = a, this.Oa = [], this.lb = !!b, this.Nb = !!c, this.Mb = !!d, b = this.mb = 0; b < a.length; b++) Hb(a[b], n(this.rb, this, b, !0), n(this.rb, this, b, !1));
        0 != a.length || this.lb || this.G(this.Oa)
    };
    r(mc, Eb),
        mc.prototype.rb = function(a, b, c) {
            return this.mb++,
                this.Oa[a] = [b, c],
                this.C || (this.lb && b ? this.G([a, c]) : this.Nb && !b ? this.w(c) : this.mb == this.Na.length && this.G(this.Oa)),
                this.Mb && !b && (c = null),
                c
        },
        mc.prototype.w = function(a) {
            for (mc.L.w.call(this, a), a = 0; a < this.Na.length; a++) this.Na[a].cancel()
        };
    var nc = function(a) {
            return new mc(a, (!1), (!0)).J(function(a) {
                for (var b = [], c = 0; c < a.length; c++) b[c] = a[c][1];
                return b
            })
        },
        oc = function(a) {
            this.H = a,
                this.V = 100,
                this.nb = [],
                this.Pa = this.la = null,
                this.ha = pc(this),
                this.ha.J(function() {
                        Ua(this.H, "a", n(this.Rb, this))
                    },
                    this)
        },
        pc = function(a) {
            return qc(a).J(function() {
                    return this
                },
                a)
        },
        qc = function(a) {
            return nc([sc(a), tc(a)])
        };
    oc.prototype.Rb = function() {
        var a = this.la,
            b = this.va();
        qc(this).J(function() {
                if (a != this.la) throw Error("User ID changed unexpectedly!");
                b != this.va() && uc(this)
            },
            this)
    };
    var rc = function(a, b) {
        a.nb.push(b)
    };
    oc.prototype.Lc = function(a) {
            this.H.set("analytics.tracking-permitted", a).J(function() {
                    this.Pa = a
                },
                this)
        },
        oc.prototype.va = function() {
            var a;
            return (a = this.Pa) && (a = c._gaUserPrefs, a = !(a && a.ioo && a.ioo())),
                a
        };
    var sc = function(a) {
            return a.H.get("analytics.tracking-permitted").J(function(a) {
                    this.Pa = void 0 === a || a
                },
                a)
        },
        tc = function(a) {
            return a.H.get("analytics.user-id").J(function(a) {
                    if (!a) {
                        a = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("");
                        for (var b = 0,
                                c = a.length; b < c; b++) switch (a[b]) {
                            case "x":
                                a[b] = Math.floor(16 * Math.random()).toString(16);
                                break;
                            case "y":
                                a[b] = (Math.floor(4 * Math.random()) + 8).toString(16)
                        }
                        a = a.join(""),
                            this.H.set("analytics.user-id", a)
                    }
                    this.la = a
                },
                a)
        };
    oc.prototype.Kc = function(a) {
        this.V = a
    };
    var uc = function(a) {
            w(a.nb,
                function(a) {
                    a("analytics.tracking-permitted")
                })
        },
        vc = function(a) {
            fb.call(this),
                this.Wa = a,
                this.H = chrome.storage.local,
                chrome.storage.onChanged.addListener(n(this.nc, this))
        };
    r(vc, fb),
        vc.prototype.nc = function(a) {
            wc(this, a) && this.dispatchEvent("a")
        };
    var wc = function(a, b) {
        return x(H(b),
            function(a) {
                return 0 == a.lastIndexOf(this.Wa, 0)
            },
            a)
    };
    vc.prototype.get = function(a) {
            var b = new Eb,
                c = this.Wa + "." + a;
            return this.H.get(c,
                    function(a) {
                        var d = chrome.runtime.lastError;
                        d ? b.w(d) : b.G(a[c])
                    }),
                b
        },
        vc.prototype.set = function(a, b) {
            var c = new Eb,
                d = {};
            return d[this.Wa + "." + a] = b,
                this.H.set(d,
                    function() {
                        var a = chrome.runtime.lastError;
                        a ? c.w(a) : c.G()
                    }),
                c
        };
    var xc = function() {};
    xc.Yb = function() {
            return xc.Ib ? xc.Ib : xc.Ib = new xc
        },
        xc.prototype.send = function() {
            return Lb()
        };
    var yc = function(a, b) {
        this.Xa = [];
        var c = n(function() {
                return this.Aa = new Rb(b.Sa()),
                    w(this.Xa,
                        function(a) {
                            this.Aa.S(a)
                        },
                        this),
                    this.Xa = null,
                    this.Aa
            },
            this);
        this.q = new kc(a, c, xc.Yb())
    };
    yc.prototype.Sa = function() {
            return this.q
        },
        yc.prototype.S = function(a) {
            this.Aa ? this.Aa.S(a) : this.Xa.push(a)
        };
    var zc = function(a, b) {
        this.k = a,
            this.mc = b
    };
    zc.prototype.create = function() {
        return new yc(this.k, this.mc)
    };
    var Ac = function(a, b) {
        fb.call(this),
            this.ya = a || 1,
            this.R = b || c,
            this.Ra = n(this.lc, this),
            this.Ta = p()
    };
    r(Ac, fb),
        a = Ac.prototype,
        a.enabled = !1,
        a.g = null,
        a.lc = function() {
            if (this.enabled) {
                var a = p() - this.Ta;
                0 < a && a < .8 * this.ya ? this.g = this.R.setTimeout(this.Ra, this.ya - a) : (this.g && (this.R.clearTimeout(this.g), this.g = null), this.dispatchEvent("tick"), this.enabled && (this.g = this.R.setTimeout(this.Ra, this.ya), this.Ta = p()))
            }
        },
        a.start = function() {
            this.enabled = !0,
                this.g || (this.g = this.R.setTimeout(this.Ra, this.ya), this.Ta = p())
        },
        a.stop = function() {
            this.enabled = !1,
                this.g && (this.R.clearTimeout(this.g), this.g = null)
        },
        a.l = function() {
            Ac.L.l.call(this),
                this.stop(),
                delete this.R
        };
    var Bc = function(a, b, d) {
            if (j(a)) d && (a = n(a, d));
            else {
                if (!a || "function" != typeof a.handleEvent) throw Error("Invalid listener argument");
                a = n(a.handleEvent, a)
            }
            return 2147483647 < b ? -1 : c.setTimeout(a, b || 0)
        },
        Cc = function(a) {
            ma.call(this),
                this.Ua = a,
                this.b = {}
        };
    r(Cc, ma);
    var Dc = [];
    Cc.prototype.listen = function(a, b, c, d) {
            f(b) || (b && (Dc[0] = b.toString()), b = Dc);
            for (var e = 0; e < b.length; e++) {
                var g = Ua(a, b[e], c || this.handleEvent, d || !1, this.Ua || this);
                if (!g) break;
                this.b[g.key] = g
            }
            return this
        },
        Cc.prototype.bb = function(a, b, c, d) {
            return Ec(this, a, b, c, d)
        };
    var Ec = function(a, b, c, d, e, g) {
        if (f(c))
            for (var h = 0; h < c.length; h++) Ec(a, b, c[h], d, e, g);
        else {
            if (b = Xa(b, c, d || a.handleEvent, e, g || a.Ua || a), !b) return a;
            a.b[b.key] = b
        }
        return a
    };
    Cc.prototype.Va = function(a, b, c, d, e) {
            if (f(b))
                for (var g = 0; g < b.length; g++) this.Va(a, b[g], c, d, e);
            else c = c || this.handleEvent,
                e = e || this.Ua || this,
                c = eb(c),
                d = !!d,
                b = Ka(a) ? a.X(b, c, d, e) : a && (a = cb(a)) ? a.X(b, c, d, e) : null,
                b && (Za(b), delete this.b[b.key]);
            return this
        },
        Cc.prototype.removeAll = function() {
            F(this.b, Za),
                this.b = {}
        },
        Cc.prototype.l = function() {
            Cc.L.l.call(this),
                this.removeAll()
        },
        Cc.prototype.handleEvent = function() {
            throw Error("EventHandler.handleEvent not implemented")
        };
    var Fc = function() {
        fb.call(this),
            this.ta = new Cc(this),
            Fa && (Ga ? this.ta.listen(Ha ? document.body : window, ["online", "offline"], this.tb) : (this.ub = !Fa || navigator.onLine, this.g = new Ac(250), this.ta.listen(this.g, "tick", this.ac), this.g.start()))
    };
    r(Fc, fb),
        Fc.prototype.ac = function() {
            var a = !Fa || navigator.onLine;
            a != this.ub && (this.ub = a, this.tb())
        },
        Fc.prototype.tb = function() {
            this.dispatchEvent((Fa ? navigator.onLine : 1) ? "online" : "offline")
        },
        Fc.prototype.l = function() {
            Fc.L.l.call(this),
                this.ta.xa(),
                this.ta = null,
                this.g && (this.g.xa(), this.g = null)
        };
    var Gc = function(a, b) {
        this.k = a,
            this.e = b
    };
    Gc.prototype.send = function(a, b) {
        return b.set(Xb, this.k.la),
            this.e.send(a, b)
    };
    var Hc = function(a) {
        this.e = a
    };
    Hc.prototype.send = function(a, b) {
        return Ic(b),
            Jc(b),
            this.e.send(a, b)
    };
    var Ic = function(a) {
            ja(a,
                function(b, c) {
                    void 0 !== b.maxLength && "text" == b.valueType && 0 < b.maxLength && c.length > b.maxLength && a.set(b, c.substring(0, b.maxLength))
                })
        },
        Jc = function(a) {
            ja(a,
                function(b, c) {
                    void 0 !== b.defaultValue && c == b.defaultValue && a.remove(b)
                })
        },
        Kc = {
            status: "device-offline",
            Ba: void 0
        },
        Lc = {
            status: "rate-limited",
            Ba: void 0
        },
        Mc = {
            status: "sampled-out",
            Ba: void 0
        },
        Nc = {
            status: "sent",
            Ba: void 0
        },
        Oc = function(a, b) {
            this.Wb = a,
                this.e = b
        };
    Oc.prototype.send = function(a, b) {
        var c;
        c = this.Wb;
        var d = c.pb(),
            e = Math.floor((d - c.ob) * c.Sb);
        return 0 < e && (c.$ = Math.min(c.$ + e, c.Tb), c.ob = d),
            1 > c.$ ? c = !1 : (c.$ -= 1, c = !0),
            c || "item" == a || "transaction" == a ? this.e.send(a, b) : Lb(Lc)
    };
    var Pc = function() {
            this.$ = 60,
                this.Tb = 500,
                this.Sb = 5e-4,
                this.pb = function() {
                    return (new Date).getTime()
                },
                this.ob = this.pb()
        },
        Qc = function(a, b) {
            this.k = a,
                this.e = b
        };
    Qc.prototype.send = function(a, b) {
        var c, d = b.get(Xb),
            d = parseInt(d.split("-")[1], 16);
        return "timing" != a ? c = this.k.V : ((c = b.get($b)) && b.remove($b), c || (c = this.k.V)),
            d < 655.36 * c ? this.e.send(a, b) : Lb(Mc)
    };
    var Rc = /^(?:([^:\/?#.]+):)?(?:\/\/(?:([^\/?#]*)@)?([^\/#?]*?)(?::([0-9]+))?(?=[\/#?]|$))?([^?#]+)?(?:\?([^#]*))?(?:#(.*))?$/,
        Sc = wa,
        Tc = function(a, b) {
            if (Sc) {
                Sc = !1;
                var d = c.location;
                if (d) {
                    var e = d.href;
                    if (e && (e = (e = Tc(3, e)) ? decodeURI(e) : e) && e != d.hostname) throw Sc = !0,
                        Error()
                }
            }
            return b.match(Rc)[a] || null
        },
        Uc = function() {};
    Uc.prototype.Eb = null;
    var Vc, Wc = function(a) {
            var b;
            return (b = a.Eb) || (b = {},
                    Zc(a) && (b[0] = !0, b[1] = !0), b = a.Eb = b),
                b
        },
        Xc = function() {};
    r(Xc, Uc);
    var Yc = function(a) {
            return (a = Zc(a)) ? new ActiveXObject(a) : new XMLHttpRequest
        },
        Zc = function(a) {
            if (!a.Hb && "undefined" == typeof XMLHttpRequest && "undefined" != typeof ActiveXObject) {
                for (var b = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"], c = 0; c < b.length; c++) {
                    var d = b[c];
                    try {
                        return new ActiveXObject(d),
                            a.Hb = d
                    } catch (e) {}
                }
                throw Error("Could not create ActiveXObject. ActiveX might be disabled, or MSXML might not be installed")
            }
            return a.Hb
        };
    Vc = new Xc;
    var $c = function(a) {
        fb.call(this),
            this.headers = new L,
            this.fa = a || null,
            this.D = !1,
            this.ca = this.a = null,
            this.ba = this.Fa = "",
            this.K = this.Ea = this.aa = this.Ha = !1,
            this.ea = 0,
            this.da = null,
            this.cb = "",
            this.Ga = this.Kb = !1
    };
    r($c, fb);
    var _c = /^https?$/i,
        ad = ["POST", "PUT"],
        bd = [],
        cd = function(a, b, c) {
            var d = new $c;
            bd.push(d),
                b && d.listen("complete", b),
                d.bb("ready", d.tc),
                d.send(a, "POST", c, void 0)
        };
    $c.prototype.tc = function() {
            this.xa(),
                A(bd, this)
        },
        $c.prototype.send = function(a, b, d, e) {
            if (this.a) throw Error("[goog.net.XhrIo] Object is active with another request=" + this.Fa + "; newUri=" + a);
            b = b ? b.toUpperCase() : "GET",
                this.Fa = a,
                this.ba = "",
                this.Ha = !1,
                this.D = !0,
                this.a = Yc(this.fa ? this.fa : Vc),
                this.ca = Wc(this.fa ? this.fa : Vc),
                this.a.onreadystatechange = n(this.eb, this);
            try {
                this.Ea = !0,
                    this.a.open(b, String(a), !0),
                    this.Ea = !1
            } catch (f) {
                return void this.ga(5, f)
            }
            a = d || "";
            var g = this.headers.clone();
            e && ha(e,
                    function(a, b) {
                        g.set(b, a)
                    }),
                e = z(g.F()),
                d = c.FormData && a instanceof c.FormData, !(0 <= v(ad, b)) || e || d || g.set("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"),
                g.forEach(function(a, b) {
                        this.a.setRequestHeader(b, a)
                    },
                    this),
                this.cb && (this.a.responseType = this.cb),
                "withCredentials" in this.a && (this.a.withCredentials = this.Kb);
            try {
                id(this),
                    0 < this.ea && ((this.Ga = dd(this.a)) ? (this.a.timeout = this.ea, this.a.ontimeout = n(this.fb, this)) : this.da = Bc(this.fb, this.ea, this)),
                    this.aa = !0,
                    this.a.send(a),
                    this.aa = !1
            } catch (h) {
                this.ga(5, h)
            }
        };
    var dd = function(a) {
            return ua && Aa(9) && i(a.timeout) && void 0 !== a.ontimeout
        },
        ed = function(a) {
            return "content-type" == a.toLowerCase()
        };
    $c.prototype.fb = function() {
            "undefined" != typeof b && this.a && (this.ba = "Timed out after " + this.ea + "ms, aborting", this.dispatchEvent("timeout"), this.abort(8))
        },
        $c.prototype.ga = function(a, b) {
            this.D = !1,
                this.a && (this.K = !0, this.a.abort(), this.K = !1),
                this.ba = b,
                fd(this),
                hd(this)
        };
    var fd = function(a) {
        a.Ha || (a.Ha = !0, a.dispatchEvent("complete"), a.dispatchEvent("error"))
    };
    $c.prototype.abort = function() {
            this.a && this.D && (this.D = !1, this.K = !0, this.a.abort(), this.K = !1, this.dispatchEvent("complete"), this.dispatchEvent("abort"), hd(this))
        },
        $c.prototype.l = function() {
            this.a && (this.D && (this.D = !1, this.K = !0, this.a.abort(), this.K = !1), hd(this, !0)),
                $c.L.l.call(this)
        },
        $c.prototype.eb = function() {
            this.Y || (this.Ea || this.aa || this.K ? gd(this) : this.jc())
        },
        $c.prototype.jc = function() {
            gd(this)
        };
    var gd = function(a) {
            if (a.D && "undefined" != typeof b && (!a.ca[1] || 4 != jd(a) || 2 != kd(a)))
                if (a.aa && 4 == jd(a)) Bc(a.eb, 0, a);
                else if (a.dispatchEvent("readystatechange"), 4 == jd(a)) {
                a.D = !1;
                try {
                    var c, d, e = kd(a);
                    a: switch (e) {
                        case 200:
                        case 201:
                        case 202:
                        case 204:
                        case 206:
                        case 304:
                        case 1223:
                            d = !0;
                            break a;
                        default:
                            d = !1
                    }
                    if (!(c = d)) {
                        var f;
                        if (f = 0 === e) {
                            var g = Tc(1, String(a.Fa));
                            if (!g && self.location) var h = self.location.protocol,
                                g = h.substr(0, h.length - 1);
                            f = !_c.test(g ? g.toLowerCase() : "")
                        }
                        c = f
                    }
                    if (c) a.dispatchEvent("complete"),
                        a.dispatchEvent("success");
                    else {
                        var i;
                        try {
                            i = 2 < jd(a) ? a.a.statusText : ""
                        } catch (j) {
                            i = ""
                        }
                        a.ba = i + " [" + kd(a) + "]",
                            fd(a)
                    }
                } finally {
                    hd(a)
                }
            }
        },
        hd = function(a, b) {
            if (a.a) {
                id(a);
                var c = a.a,
                    e = a.ca[0] ? d : null;
                a.a = null,
                    a.ca = null,
                    b || a.dispatchEvent("ready");
                try {
                    c.onreadystatechange = e
                } catch (f) {}
            }
        },
        id = function(a) {
            a.a && a.Ga && (a.a.ontimeout = null),
                i(a.da) && (c.clearTimeout(a.da), a.da = null)
        },
        jd = function(a) {
            return a.a ? a.a.readyState : 0
        },
        kd = function(a) {
            try {
                return 2 < jd(a) ? a.a.status : -1
            } catch (b) {
                return -1
            }
        },
        ld = function(a, b, c) {
            this.r = a || null,
                this.oc = !!c
        },
        md = function(a) {
            if (!a.c && (a.c = new L, a.h = 0, a.r))
                for (var b = a.r.split("&"), c = 0; c < b.length; c++) {
                    var d = b[c].indexOf("="),
                        e = null,
                        f = null;
                    0 <= d ? (e = b[c].substring(0, d), f = b[c].substring(d + 1)) : e = b[c],
                        e = decodeURIComponent(e.replace(/\+/g, " ")),
                        e = nd(a, e),
                        a.add(e, f ? decodeURIComponent(f.replace(/\+/g, " ")) : "")
                }
        };
    a = ld.prototype,
        a.c = null,
        a.h = null,
        a.add = function(a, b) {
            md(this),
                this.r = null,
                a = nd(this, a);
            var c = this.c.get(a);
            return c || this.c.set(a, c = []),
                c.push(b),
                this.h++,
                this
        },
        a.remove = function(a) {
            return md(this),
                a = nd(this, a), !!this.c.Q(a) && (this.r = null, this.h -= this.c.get(a).length, this.c.remove(a))
        },
        a.Q = function(a) {
            return md(this),
                a = nd(this, a),
                this.c.Q(a)
        },
        a.F = function() {
            md(this);
            for (var a = this.c.t(), b = this.c.F(), c = [], d = 0; d < b.length; d++)
                for (var e = a[d], f = 0; f < e.length; f++) c.push(b[d]);
            return c
        },
        a.t = function(a) {
            md(this);
            var b = [];
            if (h(a)) this.Q(a) && (b = B(b, this.c.get(nd(this, a))));
            else {
                a = this.c.t();
                for (var c = 0; c < a.length; c++) b = B(b, a[c])
            }
            return b
        },
        a.set = function(a, b) {
            return md(this),
                this.r = null,
                a = nd(this, a),
                this.Q(a) && (this.h -= this.c.get(a).length),
                this.c.set(a, [b]),
                this.h++,
                this
        },
        a.get = function(a, b) {
            var c = a ? this.t(a) : [];
            return 0 < c.length ? String(c[0]) : b
        },
        a.toString = function() {
            if (this.r) return this.r;
            if (!this.c) return "";
            for (var a = [], b = this.c.F(), c = 0; c < b.length; c++)
                for (var d = b[c], e = encodeURIComponent(String(d)), d = this.t(d), f = 0; f < d.length; f++) {
                    var g = e;
                    "" !== d[f] && (g += "=" + encodeURIComponent(String(d[f]))),
                        a.push(g)
                }
            return this.r = a.join("&")
        },
        a.clone = function() {
            var a = new ld;
            return a.r = this.r,
                this.c && (a.c = this.c.clone(), a.h = this.h),
                a
        };
    var nd = function(a, b) {
            var c = String(b);
            return a.oc && (c = c.toLowerCase()),
                c
        },
        od = function(a, b) {
            this.$b = a,
                this.na = b
        };
    od.prototype.send = function(a, b) {
        if (Fa && !navigator.onLine) return Mb();
        var c = new Eb,
            d = pd(a, b);
        return d.length > this.na ? c.w({
                status: "payload-too-big",
                Ba: ea("Encoded hit length == %s, but should be <= %s.", d.length, this.na)
            }) : cd(this.$b,
                function() {
                    c.G(Nc)
                },
                d),
            c
    };
    var pd = function(a, b) {
            var c = new ld;
            return c.add(Q.name, a),
                ja(b,
                    function(a, b) {
                        c.add(a.name, b.toString())
                    }),
                c.toString()
        },
        qd = function(a, b, c) {
            this.k = a,
                this.Qb = b,
                this.na = c
        };
    qd.prototype.Sa = function() {
        if (!this.q) {
            var a = this.k;
            if (!Ib(a.ha).C) throw Error("Cannot construct shared channel prior to settings being ready.");
            new Fc;
            var b = new Hc(new od(this.Qb, this.na)),
                c = new Pc;
            this.q = new Gc(a, new Qc(a, new Oc(c, b)))
        }
        return this.q
    };
    var rd = new L,
        sd = function() {
            if (!N) {
                var a = new vc("google-analytics");
                N = new oc(a)
            }
            return N
        };
    q("goog.async.Deferred", Eb),
        q("goog.async.Deferred.prototype.addCallback", Eb.prototype.J),
        q("goog.events.EventTarget", fb),
        q("goog.events.EventTarget.prototype.listen", fb.prototype.listen),
        q("analytics.getService",
            function(a) {
                var b = rd.get(a, null);
                if (null === b) {
                    var b = chrome.runtime.getManifest().version,
                        c = sd();
                    if (!O) {
                        var d = sd();
                        O = new zc(d, new qd(d, "https://www.google-analytics.com/collect", 8192))
                    }
                    b = new ic("ca1.5.2", a, b, c, O),
                        rd.set(a, b)
                }
                return b
            }),
        q("analytics.internal.GoogleAnalyticsService", ic),
        q("analytics.internal.GoogleAnalyticsService.prototype.getTracker", ic.prototype.Cc),
        q("analytics.internal.GoogleAnalyticsService.prototype.getConfig", ic.prototype.Bc),
        q("analytics.internal.ServiceSettings", oc),
        q("analytics.internal.ServiceSettings.prototype.setTrackingPermitted", oc.prototype.Lc),
        q("analytics.internal.ServiceSettings.prototype.isTrackingPermitted", oc.prototype.va),
        q("analytics.internal.ServiceSettings.prototype.setSampleRate", oc.prototype.Kc),
        q("analytics.internal.ServiceTracker", gc),
        q("analytics.internal.ServiceTracker.prototype.send", gc.prototype.send),
        q("analytics.internal.ServiceTracker.prototype.sendAppView", gc.prototype.Gc),
        q("analytics.internal.ServiceTracker.prototype.sendEvent", gc.prototype.Hc),
        q("analytics.internal.ServiceTracker.prototype.sendSocial", gc.prototype.Jc),
        q("analytics.internal.ServiceTracker.prototype.sendException", gc.prototype.Ic),
        q("analytics.internal.ServiceTracker.prototype.sendTiming", gc.prototype.Cb),
        q("analytics.internal.ServiceTracker.prototype.startTiming", gc.prototype.Mc),
        q("analytics.internal.ServiceTracker.Timing", hc),
        q("analytics.internal.ServiceTracker.Timing.prototype.send", hc.prototype.send),
        q("analytics.internal.ServiceTracker.prototype.forceSessionStart", gc.prototype.Ac),
        q("analytics.internal.ServiceTracker.prototype.addFilter", gc.prototype.S),
        q("analytics.internal.FilterChannel.Hit", Sb),
        q("analytics.internal.FilterChannel.Hit.prototype.getHitType", Sb.prototype.Gb),
        q("analytics.internal.FilterChannel.Hit.prototype.getParameters", Sb.prototype.T),
        q("analytics.internal.FilterChannel.Hit.prototype.cancel", Sb.prototype.cancel),
        q("analytics.ParameterMap", ia),
        q("analytics.ParameterMap.Entry", ia.Entry),
        q("analytics.ParameterMap.prototype.set", ia.prototype.set),
        q("analytics.ParameterMap.prototype.get", ia.prototype.get),
        q("analytics.ParameterMap.prototype.remove", ia.prototype.remove),
        q("analytics.ParameterMap.prototype.toObject", ia.prototype.Jb),
        q("analytics.HitTypes.APPVIEW", "appview"),
        q("analytics.HitTypes.EVENT", "event"),
        q("analytics.HitTypes.SOCIAL", "social"),
        q("analytics.HitTypes.TRANSACTION", "transaction"),
        q("analytics.HitTypes.ITEM", "item"),
        q("analytics.HitTypes.TIMING", "timing"),
        q("analytics.HitTypes.EXCEPTION", "exception"),
        F(X,
            function(a) {
                var b = a.id.replace(/[A-Z]/, "_$&").toUpperCase();
                q("analytics.Parameters." + b, a)
            }),
        q("analytics.filters.EventLabelerBuilder", ca),
        q("analytics.filters.EventLabelerBuilder.prototype.appendToExistingLabel", ca.prototype.wc),
        q("analytics.filters.EventLabelerBuilder.prototype.stripValue", ca.prototype.Nc),
        q("analytics.filters.EventLabelerBuilder.prototype.powersOfTwo", ca.prototype.Ec),
        q("analytics.filters.EventLabelerBuilder.prototype.rangeBounds", ca.prototype.Fc),
        q("analytics.filters.EventLabelerBuilder.prototype.build", ca.prototype.Ca),
        q("analytics.filters.FilterBuilder", aa),
        q("analytics.filters.FilterBuilder.builder", ba),
        q("analytics.filters.FilterBuilder.prototype.when", aa.prototype.when),
        q("analytics.filters.FilterBuilder.prototype.whenHitType", aa.prototype.zb),
        q("analytics.filters.FilterBuilder.prototype.whenValue", aa.prototype.Oc),
        q("analytics.filters.FilterBuilder.prototype.applyFilter", aa.prototype.xb),
        q("analytics.filters.FilterBuilder.prototype.build", aa.prototype.Ca),
        q("analytics.EventBuilder", ka),
        q("analytics.EventBuilder.builder",
            function() {
                return la
            }),
        q("analytics.EventBuilder.prototype.category", ka.prototype.xc),
        q("analytics.EventBuilder.prototype.action", ka.prototype.action),
        q("analytics.EventBuilder.prototype.label", ka.prototype.label),
        q("analytics.EventBuilder.prototype.value", ka.prototype.value),
        q("analytics.EventBuilder.prototype.dimension", ka.prototype.yc),
        q("analytics.EventBuilder.prototype.metric", ka.prototype.Dc),
        q("analytics.EventBuilder.prototype.send", ka.prototype.send)
}();